package com.framework.service;

import com.baomidou.mybatisplus.service.IService;
import com.framework.entity.flow.FlowAccount;
import com.framework.entity.flow.FlowVipCashBack;
import com.framework.entity.tran.TranBenefitDay;
import com.framework.view.AssView;
import com.framework.view.FlowAccountView;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 功能描述: 账户支出收入流水
 *
 * @author ck
 * @date 2018/8/28 19:46
 */
public interface FlowAccountService extends IService<FlowAccount> {
	/**
	 * 流水列表
	 * @param token
	 * @param flowAccount
	 * @param pageNo
	 * @return
	 */
	List<FlowAccount> queryFlowAccountList(String token, FlowAccount flowAccount, Integer pageNo);

	/**
	 * 增加
	 * @param FlowAccount
	 */
	void insertFlowAccount(FlowAccount FlowAccount);

	/**
	 * 查询累计收益走势图 近期6个月的数据
	 * @param token
	 * @return
	 */
	Map<String,Object> queryMonthProfitSumList(String token);


	/**
	 * 其它类型收益
	 * @param agentId
	 * @return
	 */
	BigDecimal queryOtherAmount(Long agentId);
	/**
	 * 其它类型收益明细
	 * @param token
	 * @return
	 */
	List<FlowAccountView> queryOtherAmountList(String token);

	/**
	 * 图标统计
	 * @param token
	 * @param type
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	List<Map<String, Object>> queryFlowAccountTable(String token, Integer type, String startDate, String endDate);

	/**
	 * 收益明细
	 * @param token
	 * @param pageNo
	 * @param incomeType
	 * @param dateType
	 * @param startDate
	 * @param endDate
	 * @return
	 */
    Map<String, Object> queryIncomeInfo(String token, Integer pageNo, Integer incomeType, Integer dateType, String startDate, String endDate);

	/**
	 * 收益支出总计
	 * @param token
	 * @param dateType
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	Map<String, Object> queryIncomeAndExpend(String token, Integer dateType, String startDate, String endDate);

	/**
	 * 收益列表
	 * @param token
	 * @param pageNo
	 * @param dateType
	 * @param incomeType
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	Map<String, Object> queryIncomeList(String token, Integer pageNo, Integer dateType, Integer incomeType, String startDate, String endDate);

	/**
	 * 百易助手列表
	 * @param token
	 * @param pageNo
	 * @return
	 */
	List<AssView> queryAssList(String token, Integer pageNo);


	/**
	 * 根据belId查询是否已存在存在则不添加
	 * @param account
	 * @return
	 */
	FlowAccount queryByBelId(FlowAccount account);

	/**
	 * 根据belId查询是否已存在存在则不添加
	 * @param belId
	 * @return
	 */
	FlowAccount queryByBelId(String belId);

	/**
	 * 根据分润添加流水记录
	 * @param tranBenefitDay
	 */
	void addFlowAccountAfterBenefit(TranBenefitDay tranBenefitDay);

	/**
	 * 添加激活返现流水
	 * @param flowVipCashBack
	 * @param accountType
	 */
	void addVipCashAccount(FlowVipCashBack flowVipCashBack, int accountType);

	/**
	 * 根据sn和vip时间查询
	 * @param sn
	 * @param vipTime
	 * @return
	 */
	FlowVipCashBack queryVipBySn(String sn, Date vipTime);
}

